package com.tjetc;

public class _16Pyramid{
    public static void main(String[] args) {
		/*

		// 需求：打印空心金字塔 这种需求 可以说是纯纯的练思维 练语法 实际不会有这种需求

				*
			  *  *
			 *    *
			********

		// 思路分析： 总体规律 找层数和* 的关系
		// 问题拆解：
		// 1. 先打印一个矩形

			*****
			*****
			*****
			*****
			*****

		// 2.打印半个金字塔 行 i 列 j
			*			第一层：有1个*
			**			第二层：有2个*
			***			第三层：有3个*
			****		第四层：有4个*
			*****		第五层：有5个*



		// 3. 打印整个金字塔
				*			第一层：有1个*   2 * 1 - 1    有4个空格      总层数 - 1
			   ***			第二层：有3个*   2 * 2 - 1    有3个空格      总层数 - 2
			  *****			第三层：有5个*   2 * 3 - 1    有2个空格	  总层数 - 3
			 *******		第四层：有7个*   2 * 4 - 1    有1个空格	  总层数 - 4
			*********		第五层：有9个*   2 * 5 - 1    有0个空格	  总层数 - 5



		// 4. 打印空心金字塔
				*			第一层：有1个*       只留第一个 和最后一个 打印*
			   * *			第二层：有2个*       只留第一个 和最后一个 打印*
			  *   *			第三层：有2个*       只留第一个 和最后一个 打印*
			 *     *		第四层：有2个*       只留第一个 和最后一个 打印*
			*********		第五层：有9个*       全部打印*
            通过判断怎么确定是第一个位置 和最后一个位置
		*/

        // 1
//        for (int i = 0; i < 5; i++) {
//            for (int j = 0; j < 5; j++) {
//                // 没有ln就没有换行
//                System.out.print("*");
//            }
//            System.out.println();
//        }


        // 2
//        for (int i = 0; i < 5; i++) {
//            for (int j = 0; j <= i; j++) {
//                // 没有ln就没有换行
//                System.out.print("*");
//            }
//            System.out.println();
//        }

        // 3
//        for (int i = 1; i <= 5; i++) {
//
//            // 先要输出空格
//            for (int j = 1; j <= 5 - i; j++) {
//                System.out.print(" ");
//            }
//
//            // 再输出*
//            for (int j = 1; j <= 2 * i - 1; j++) {
//                // 没有ln就没有换行
//                System.out.print("*");
//            }
//            System.out.println();
//        }

        // 4
        for (int i = 1; i <= 5; i++) {

            // 先要输出空格
            for (int j = 1; j <= 5 - i; j++) {
                System.out.print(" ");
            }

            // 再输出*
            // 再输出这一行*的时候 需要确定什么时候输出* 什么时候输出空格
            for (int j = 1; j <= 2 * i - 1; j++) {
                // 需要判断
                if (j == 1 || j == 2 * i - 1 || i == 5) {
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }

            }
            System.out.println();
        }

    }
}